Python Web——Django笔记
新建项目: django-admin startproject blog .
创建应用程序(APP):python manage.py startapp fsite
添加app:INSTALLED_APPS=['...']
新建的 app 如果不加到 INSTALL_APPS 中的话, django 就不能自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件) .小提示,DEBUG=True 的时候,Django 还可以自动找到 各 app 下 static 文件夹中的静态文件(js,css,图片等资源)
创建SQLite数据库:python manage.py migrate
#创建数据表
使模型生效:python manage.py makemigrations
# Django 在 blog 应用的 migrations\ 目录下生成了一个 0001_initial.py 文件,这个文件是 Django 用来记录我们对模型做了哪些修改的文件
创建管理员:python manage.py createsuperuser
添加template: 'DIRS':[os.path.join(BASE_DIR,'templates')],
清空数据库:python manage.py flush
BASE_DIR
是 settings.py 在配置开头前面定义的变量
添加静态文件:
1 | STATIC_URL = '/static/' |
urls.py头文件
1
2
3
4 > from django.contrib import admin
> from django.conf.urls import include,url
> from fsite.views import homepage,showpost
>
views.py头文件
1
2
3
4
5 > from django.shortcuts import render,redirect
> from django.http import HttpResponse,request
> from .models import Post
> from django.template.loader import get_template
>
使显示标题:
1 | def __str__(self): |
书上的__unicode__和__repr__都没有用
增加显示其他时
1 | class PostAdmin(admin.ModelAdmin): |
要记得在admin.site.register(Post,PostAdmin)
中增加PostAdmin
在urls.py中的url()的库文件要修改
1 | from django.contrib import admin |
同时记得这点:
1 | urlpatterns = [ |
views.py视图函数:
1 | def homepage(request): ##首先记得是*def* |
1 | for count,post in enumerate(posts): |
template
步骤1: 在settings.py 中设置模板文件夹的位置.
步骤2:在urls.py中创建网址和views.py中函数的对应关系
步骤3:创建.html文件(例如index.html)做好排版数据要放的位置
步骤4:运行程序,以objects.all()在views.py中取得数据或资料
步骤5:以render函数把数据(posts)送到指定的模板文件(例如index.html)中.
网页对应urls.py
步骤1: 在urls.py中设置,只要是/post/开头的网址,就把后面接着的文字当做参数传送slug给post_detail显示单篇文章的函数
步骤2:在views.py中新增一个post_detail函数.除了接受request参数外,也接受slug参数.
步骤3:在templates文件夹中创建一个用来显示单篇文章的post.html
步骤4:在post_detail函数中,以slug为关键字搜索数据集,找出是否有符合的项目
步骤5:如果有符合的,就把找到的数据项传送给render函数,找出post.html模板页进行渲染(即进行页面显示),再把结果交给HttpResponse回传给浏览器
步骤6:如果没有符合的项目,就把网页转回首页
共享模板的使用:
文件名 | 用途说明 |
---|---|
base.html | 网站的基础模板,提供网站的主要设计、外观风格 |
header.html | 网站中每一个网页共享的标题元素,通常是放置网站 Log 的地方 |
footer.html | 网站中每一个网页的共享页尾,用来放置版权声明或其他参考信息 |
index.html | 此范例网站的首页 |
post.html | 此范例网站用来显示单篇文章的网页 |
显示图片
要用过滤器,不然就是串html代码.
Wampserver初始:
1 | 账号:root |
bootstrap的CDN:
HTML.CSS放在之前,JS的放在之前
1 | <head> |
1 | <body> |
后台管理的自定义admin.py
显示更多的小标题
1 | class ProductAdmin(admin.ModelAdmin): |
要显示中文的小标题
1 | class Product(models.Model): |
注意:admin.py 中的class ProductAdmin 仍需要
1 | try: |
django中的ORM中如果用get找不到,就会产生一个DoseNotExist的异常中断程序
filter作用:我们很少会一次性从数据库中取出所有的数据;通常都只针对一部分数据进行操作
所以要将product中的成员单独
***python 中没有null ***
与C不同的是,在python中是没有NULL的,取而代之的是None,它的含义是为空
python是把0,空字符串‘ ’和None都看作False,把其他数值和非空字符串都看作True
表示该值是一个空对象,空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
1 | <label for="byear">你的年份:</label> |
这个也要放到中
对数据的提取:
1 | try: |
Author: Mrli
Link: https://nymrli.top/2018/10/24/Python Web——Django笔记(一)/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.